/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AreaDesenho.java
 *
 * Created on 9/Jan/2012, 18:26:46
 */
package gardenmaker;


import java.awt.Graphics;
import java.awt.event.MouseEvent;


/**
 *
 * @author lenny
 */
public class AreaDesenho extends javax.swing.JPanel {
    
    private Projeto projeto;
    private JanelaPrincipal jp;
    

    /** Creates new form AreaDesenho */
    public AreaDesenho() {
        initComponents();

            
    }
    
     public void setProjeto(Projeto projeto) {
        this.projeto = projeto;
    }
     public void setJanelaPrincipal(JanelaPrincipal jp){
         this.jp = jp;
     }
     
     @Override
    public void paint(Graphics g) {
        super.paint(g);
        if (projeto!=null){
            projeto.displayShapes(g);
        }
        repaint();
    }
     
     

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        setPreferredSize(new java.awt.Dimension(3000, 3000));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                formMousePressed(evt);
            }
        });
        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                formMouseDragged(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1000, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1000, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents

    private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed
 
        if (evt.getButton() == MouseEvent.BUTTON1) {
            if (projeto.getEstado() == projeto.ESTADO_ADD_TREE) {
                /*Tree obj = new Tree(evt.getX(), evt.getY(), "myTree", "treeIcon.png");
                obj.setProjeto(projeto);
                projeto.adicionar(obj);
                 * 
                 */
                Forma forma = new TreeForma(evt.getX(), evt.getY(), "arvore");
                projeto.addForma(forma);
                
            }

            if (projeto.getEstado() == projeto.ESTADO_ADD_BUSH) {
                Forma forma = new BushForma(evt.getX(), evt.getY(), "arbusto");
                projeto.addForma(forma);
            }

            if (projeto.getEstado() == projeto.ESTADO_ADD_SQUARE) {
                Forma forma = new Retangulo(evt.getX(), evt.getY(), "rectangulo");
                projeto.addForma(forma);

            }

            if (projeto.getEstado() == projeto.ESTADO_ADD_CIRCLE) {
                Forma forma = new Circulo(evt.getX(), evt.getY(), "circulo");
                projeto.addForma(forma);

            }
            
            if (projeto.getEstado()==Projeto.ESTADO_ADD_PALM){
                Forma forma = new Palmeira(evt.getX(), evt.getY(),"Palmeira");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==Projeto.ESTADO_ADD_FLOWER){
                Forma forma = new Flor(evt.getX(), evt.getY(),"Flor");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==Projeto.ESTADO_ADD_TUBO){
                Forma forma = new Tubo(evt.getX(), evt.getY(),"Tubo Horizonta");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==Projeto.ESTADO_ADD_ROCK){
                Forma forma = new Pedra(evt.getX(), evt.getY(),"Pedra");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==Projeto.ESTADO_ADD_FOUNTAIN){
                Forma forma = new Fonte(evt.getX(), evt.getY(),"Fonte");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_POOL){
                Forma forma = new Piscina(evt.getX(), evt.getY(),"Piscina");
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_POOL1){
                Forma forma = new Piscina1(evt.getX(), evt.getY(), "Piscina1");
                projeto.addForma(forma);
         
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_LAKE){
                Forma forma = new Lago(evt.getX(), evt.getY(), "Lago");
                projeto.addForma(forma);
            }
               
            if (projeto.getEstado()==projeto.ESTADO_ADD_HOUSE){
                Forma forma = new Casa(evt.getX(), evt.getY(), "Casa");              
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_BRIDGE){
                Forma forma = new Ponte(evt.getX(), evt.getY(), "Ponte");              
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_WALL){
                Forma forma = new Muro(evt.getX(), evt.getY(), "Muro");              
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_FENCE){
                Forma forma = new Cerca(evt.getX(), evt.getY(), "Cerca");              
                projeto.addForma(forma);
            }
            
            if (projeto.getEstado()==projeto.ESTADO_ADD_FAUCET){
                Forma forma = new Torneira(evt.getX(), evt.getY(), "Torneira");              
                projeto.addForma(forma);
            }
            
             if (projeto.getEstado()==projeto.ESTADO_ADD_ELBOW){
                Forma forma = new LigacaoL(evt.getX(), evt.getY(), "Ligação L");              
                projeto.addForma(forma);
            }
             
             if (projeto.getEstado()==projeto.ESTADO_ADD_UNIONT){
                Forma forma = new LigacaoT(evt.getX(), evt.getY(), "Ligação T");              
                projeto.addForma(forma);
            }
             
             if (projeto.getEstado()==projeto.ESTADO_ADD_TUBO1){
                Forma forma = new TuboVertical(evt.getX(), evt.getY(), "Tubo Vertical");              
                projeto.addForma(forma);
            }
             
              if (projeto.getEstado()==projeto.ESTADO_ADD_END){
                Forma forma = new Terminacao(evt.getX(), evt.getY(), "Terminação");              
                projeto.addForma(forma);
            }


            if (projeto.getEstado() == projeto.ESTADO_NONE || projeto.getEstado() == projeto.ESTADO_SELECT) {
                projeto.checkForma(evt.getX(), evt.getY(), false);
            }
           
        }
        
        if (evt.getClickCount() == 2 && evt.getButton() == MouseEvent.BUTTON1) {
            System.out.println("double click!");
            projeto.checkForma(evt.getX(), evt.getY(), true);
            repaint();
        }
        
        if (evt.getButton()==MouseEvent.BUTTON3) {
            jp.bGroupFlora.clearSelection();
            jp.bGroupLimite.clearSelection();
            projeto.setEstado(projeto.ESTADO_NONE);
            projeto.clearSelected();
        }
        
        repaint();
    }//GEN-LAST:event_formMousePressed

    private void formMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseDragged
        if (projeto.getEstado() == projeto.ESTADO_SELECT) {
            projeto.moveSelected(evt.getX(), evt.getY());
        }
               
    }//GEN-LAST:event_formMouseDragged

    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables

}
